package com.qsl.ssyx.order.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qsl.ssyx.model.order.OrderInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qsl.ssyx.vo.order.OrderConfirmVo;
import com.qsl.ssyx.vo.order.OrderSubmitVo;
import com.qsl.ssyx.vo.order.OrderUserQueryVo;

import java.util.List;

/**
 * <p>
 * 订单 服务类
 * </p>
 *
 * @author 青衫泪
 * @since 2023-09-08
 */
public interface OrderInfoService extends IService<OrderInfo> {

    //    确认订单（立即购买）
    OrderConfirmVo confirmOrder(Long userId);

    //    生成订单
    Long submitOrder(OrderSubmitVo orderSubmitVo, Long userId);

    //    根据orderNo（订单号）查询订单信息
    OrderInfo getOrderInfoByorderNo(String orderNo);


    //  支付成功 rabbitMq发送消息①修改订单状态（待发货），②减库存，③ 删除购物车已购买的商品记录   ==>   交换机,路由key,消息
    void orderPay(String orderNo);

    // 根据订单状态查询，订单信息  ==>  订单状态【0->待付款；1->待发货；2->已发货；3->待用户收货，已完成】
    Page<OrderInfo> findUserOrderByOrderStatusId(Page<OrderInfo> pageParam, OrderUserQueryVo orderUserQueryVo);
}
